<?php

//底部是使用例子,获取echarts的option配置

/**
 * echarts饼图默认配置
 */
function echart_pie_default()
{  
    return  [
        'tooltip' => [
            'trigger' => 'item'
        ],
        'legend' => [  //图例组件展现了不同系列的标记(symbol)，颜色和名字。可以通过点击图例控制哪些系列不显示。
            'top' => '5%',
            'orient' => 'horizontal', 
            'left' => 'center'
        ],
        'series' => [
            [
                'name' => '访问来源',//hover时上面展示的标题
                'type' => 'pie', //echarts形状
                'radius' => ['40%', '70%'],
                'avoidLabelOverlap' => false,
                'itemStyle' => [
                    'borderRadius' => 10,
                    'borderColor' => '#fff',
                    'borderWidth' => 2
                ],
                'label' => [
                    'show' => false, //饼图显示的data.name第一个
                    'position' => 'center' //位置中心圈
                ],
                'emphasis' => [
                    'label' => [
                        'show' => true,//hover时是否显示该data.name的值
                        'fontSize' => '20',
                        'fontWeight' => 'bold'
                    ]
                ],
                'labelLine' => [
                    'show' => false
                ],
                'data' => [//饼图的数据
                    ['value' => 1048, 'name' => '搜索引擎'],
                    ['value' => 735, 'name' => '直接访问'],
                    ['value' => 580, 'name' => '邮件营销'],
                    ['value' => 484, 'name' => '联盟广告'],
                    ['value' => 300, 'name' => '视频广告']
                ]
            ]
        ]
    ];
    
}   

/**
 * 是否关联数组
 * @param array $arr
 * @return bool
 */
function is_assoc($arr) {
    return count(array_filter(array_keys($arr), 'is_string')) > 0;
}  

/**
 * 合并两个多维数组
 * @param array $a1
 * @param array $a2
 * @return array
 */
function array_merge_many($a1, $a2) {
    $arr = array_merge($a1, $a2);
    foreach ($arr as $k => $v) {
        if(is_array($v) && isset($a1[$k]) && isset($a2[$k])) {
            $arr[$k] = array_merge_many($a1[$k], $a2[$k]);
        }
    }
    return $arr;
}

/**
 * 合并两个多维数组@以第一个数组为模板
 * @param array $a1
 * @param array $a2
 * @return array
 */
function array_merge_many_only($a1, $a2) {
    $arr = [];
    foreach ($a1 as $k => $v) {
        if(isset($a2[$k])) {
            if(gettype($a1[$k]) == gettype($a2[$k])) {
                if (is_array($v)) {
                    if (is_assoc($a1[$k]) == is_assoc($a2[$k])) {
                        $arr[$k] = array_merge($v, $a2[$k]);
                    } else {
                        $arr[$k] = array_merge_many_only($v, $a2[$k]);
                    }
                } else {
                    $arr[$k] = $a2[$k];
                }
            } else {
                $arr[$k] = $v;
            }
        } else {
            $arr[$k] = $v;
        }
    }
    return $arr;
}

/**
 * 更新多维数组的数据@以第一个数组为模板
 * @param array $a1
 * @param array $a2
 * @return array
 */
function array_update_many_only($a1, $a2) {
    $arr = $a1;
    foreach ($a2 as $k => $v) {
        if(isset($a1[$k])) {
            if(gettype($a1[$k]) == gettype($a2[$k])) {
                if (is_array($v)) {
                    $arr[$k] = array_update_many_only($a1[$k], $v);
                } else {
                    $arr[$k] = $v;
                }
            } else {
                $arr[$k] = $v;
            }
        } else {
            $arr[$k] = $v;
        }
    }
    return $arr;
}

//补全中国地图数据
function supple_pro($data){
    $all_pro = '北京,天津,上海,重庆,河北,山西,辽宁,吉林,黑龙江,江苏,浙江,安徽,福建,江西,山东,河南,湖北,湖南,广东,海南,四川,贵州,云南,陕西,甘肃,青海,台湾,内蒙古,广西,西藏,宁夏,新疆';
    $all_pro = explode(',', $all_pro);
    $arr = [];
    foreach ($data as $k => $v) {
        if (!in_array($v['name'], $all_pro)){
            unset($data[$k]);
            continue;
        }
        $arr[] = $v['name'];
    }
    foreach ($all_pro as $key => $value) {
        if (!in_array($value, $arr)) {
            $data[] = [
                'name' => $value,
                'value' => '0',
                'support_num' => '0'
            ];
        }else{
            
        }
    }
    return array_values($data);
    
}